home *** CD-ROM | disk | FTP | other *** search
- /********************************************************************/
- /* REINDEX.C */
- /* */
- /* This is a sample program which demonstrates how to reindex a */
- /* data file. The data file which is used is the one created by */
- /* NAMES.C which creates an online address book using the B-PLUS */
- /* file indexing toolkit. */
- /* */
- /********************************************************************/
-
-
- #include <stdio.h>
- #include <string.h>
- #include "bplus.h"
-
-
- typedef struct /* Here is the address record definition */
- {
- char lastname[16]; /* last name */
- char firstname[16]; /* first name */
- char address1[31]; /* first address line */
- char address2[31]; /* second address line */
- char city[21]; /* the city */
- char state[3]; /* the state */
- char zipcode[6]; /* postal zip code */
- char telephone[14]; /* telephone number */
- } ADDRESS;
-
-
- IX_DESC nameindex; /* index file variable */
- FILE *namefile; /* data file pointer */
- ADDRESS person; /* data record variable */
-
-
- void openfiles(void);
- void closefiles(void);
- long makeindex(void);
-
-
- void openfiles()
- /* The file NAMES.DAT already exists. It is opened and a new */
- /* index file is created. */
- {
- if ((namefile = fopen("names.dat","r")) != NULL)
- make_index("names.idx", &nameindex, 1); /* create index file */
- else
- {
- printf("\nUnable to open NAMES.DAT\n");
- exit(1);
- }
- } /* openfiles */
-
-
- void closefiles()
- /* close all files and exit */
- {
- fclose(namefile);
- close_index(&nameindex);
- } /* closefiles */
-
-
- long makeindex()
- /* read address records and add key to index file */
- {
- ENTRY ee;
- long num, position, size;
- int ret;
- size = sizeof(person); /* data record size */
- ret = fread(&person,size,1,namefile); /* ret is number of data */
- /* records that were read */
- num = 0L; /* num = data items read */
- position = 0L; /* position in datafile */
- while (ret == 1)
- {
- strcpy(ee.key, person.lastname); /* key is last name followed */
- strcat(ee.key, person.firstname); /* first name. Capitalize */
- strupr(ee.key); /* and copy to ee.key. */
- ee.recptr = position; /* position in datafile */
- if (add_key(&ee, &nameindex) != IX_OK) /* add key to index */
- printf("Error while adding key to index file");
- position += size; /* new position in datafile */
- num++; /* increment data items read */
- ret = fread(&person,sizeof(person),1,namefile);
- }
- return ( num );
- } /* makeindex */
-
-
- main()
- /* Here is the main program */
- {
- long num;
- openfiles();
- printf("\n\n MAKING THE NEW INDEX FILE\n\n");
- num = makeindex();
- closefiles();
- printf(" REINDEXING IS COMPLETE - %ld ITEMS WERE INDEXED\n", num);
- } /* main */
-